Mybatis游标查询Cursor(滚动查询)

您所在的位置:网站首页 tidb mybatis分页查询 Mybatis游标查询Cursor(滚动查询)

Mybatis游标查询Cursor(滚动查询)

#Mybatis游标查询Cursor(滚动查询)| 来源: 网络整理| 查看: 265

需求是实现滚动查询而不是分页,用游标查询实现此需求

总体思路:滚动查询,往下拉滚动条触发请求,返回数据并带当前下标,以备下次请求继续往下查询

①首先在dao层mapper文件中写查询方法(下面的示例带有查询条件)

// 策略为向下滚动 @Options(resultSetType = ResultSetType.FORWARD_ONLY) @Select({"select * from task where status!=#{status} order by create_time desc"}) Cursor getTasksStatistic(Integer status);

②在service层写方法并在serviceimpl中实现

// TaskCursorVo是封装类 TaskCursorVo getTaskStatus(Integer currentIndex, Integer pageSize); public TaskCursorVo getTaskStatus(Integer currentIndex,Integer pageSize) { TaskCursorVo taskCursorVo=new TaskCursorVo(); List collect=new ArrayList(); // 第一个参数为方法名,第二个参数是查询条件的值(如果没有查询条件就写null),第三个条件是从下标为currentIndex的开始查pageSize条数据 Cursor tasksStatistic = sqlSessionTemplate.selectCursor("getTasksStatistic",DELETED.getCode(),new RowBounds(currentIndex,pageSize)); // 对结果进行遍历封装 Iterator iterator = tasksStatistic.iterator(); while (iterator.hasNext()) { Task task = iterator.next(); TaskStatusVo taskStatusVo = new TaskStatusVo(); BeanUtils.copyProperties(task, taskStatusVo); taskStatusVo.setStatusName(Objects.requireNonNull(getByCode(task.getStatus())).getDesc()); collect.add(taskStatusVo); } taskCursorVo.setTaskStatusVos(collect); // 需要把当前下标返回给前端 taskCursorVo.setCurrentIndex(tasksStatistic.getCurrentIndex()); Example e=new Example(Task.class); Example.Criteria c = e.createCriteria().andNotEqualTo("status", DELETED.getCode()); List tasks = taskMapper.selectByExample(e); // 把总条数查出来给前端 taskCursorVo.setTotalSize(tasks.size()); return taskCursorVo; }

③controller实现

@GetMapping("/taskStatus") public ResultModel taskStatus(@RequestParam(defaultValue = "0") Integer currentIndex,@RequestParam(defaultValue = "20") Integer pageSize){ // 第一次默认从第0条开始查询20条,往后的前端会把上次请求返回的当前下表传过来 // 如果不是从第一次查询,就要从上次查询当前下标的下一条数据开始查询 if (currentIndex!=0){ currentIndex+=1; } TaskCursorVo taskCursorVo = taskService.getTaskStatus(currentIndex, pageSize); return ResultModel.success(taskCursorVo); }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3